package com.saybiu.dao;

import com.saybiu.domain.Post;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author: liming
 * @Date: 2021/4/17 13:58
 */
public interface PostDao {
    /**
     * 添加帖子目录信息
     * @param post
     * @return
     */
    int addPostDao(Post post);

    /**
     * 用户删除帖子
     * @param userId
     * @param postId
     * @return
     */
    int deleteUserPost(@Param("userId") Integer userId, @Param("postId") Integer postId);

    /**
     * 阅读帖子 帖子阅读量自增 1
     * @param postId 帖子id
     * 操作bbs_posts表
     */
    int addReadPost(Integer postId);

    /**
     *点赞帖子,帖子点赞量+1
     * @param postId
     * @return
     */
    int updateLikeNum(Integer postId);

    /**
     * 用户取消点赞帖子,帖子目录表中的点赞量-1
     * @param postId
     * @return
     */
    int updatePostLikeNum(Integer postId);

    /**
     * 用户收藏帖子,帖子收藏量 + 1
     * @param postId
     * @return
     */
    int updatePostCollectedNumAdd(Integer postId);

    /**
     * 用户删除收藏帖子 ,帖子收藏量 - 1
     * @param postId 帖子 id
     * @return 影响行数
     */
    int updatePostCollectedNumSub(Integer postId);

    /**
     * 用户查看自己发送的帖子
     * @param userId 用户id
     * @return 帖子集合
     */
    List<Post> queryUserPost(Integer userId);

    /**
     * 根据帖子类型和阅读量查询
     * @param typeName 帖子类型
     * @retur 帖子表的集合
     */
    List<Post> queryPostsByTypeAndReadNum(String typeName);

    /**
     * 根据帖子类型和点赞量查询
     * @param typeName 帖子类型
     * @return
     * 操作bbs_posts表
     */
    List<Post> queryPostByTypeAndLikeNum(String typeName);

    /**
     * 根据帖子类型和收藏量查询
     * @param typeName 帖子类型
     * @return
     * 操作bbs_posts表
     */
    List<Post> queryPostByTypeAndCollectionNum(String typeName);

    /**
     * 根据阅读量查询帖子
     * @return
     * 操作bbs_posts表
     */
    List<Post> queryPostByReadNum();

    /**
     * 根据点赞量查询帖子
     * @return
     * 操作bbs_posts表
     */
    List<Post> queryPostByLikeNum();

    /**
     * 根据收藏量查询帖子
     * @return
     * 操作bbs_posts表
     */
    List<Post> queryPostByCollectionNum();

    /**
     * 帖子回复数加1 +1
     * @param postId 帖子id
     * @return
     */
    Integer incrCommentNum(@Param("postId") Integer postId);

    /**
     * 删除对帖子的回复 -1
     * @param postId
     * @return
     */
    Integer deleteComment(@Param("postId") Integer postId);
}
